package com.kreative.rainbowstudio.commandmode;

public class Data {
	private static final byte[][] PICTURE_DATA = new byte[][] {
		{
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x4B, (byte)0x00, (byte)0x00, (byte)0x04, (byte)0xBF,
			(byte)0x00, (byte)0x00, (byte)0x4B, (byte)0xFF, (byte)0x00, (byte)0x04, (byte)0xBF, (byte)0xFF,
			(byte)0x00, (byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0x04, (byte)0xBF, (byte)0xFF, (byte)0xFF,
			(byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xBF, (byte)0xFF, (byte)0xFF, (byte)0xFD,
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xD7, (byte)0x10, (byte)0x00,
			(byte)0xFD, (byte)0xF1, (byte)0x00, (byte)0x00, (byte)0xDA, (byte)0x10, (byte)0x00, (byte)0x00,
			(byte)0x71, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x10, (byte)0x00, (byte)0x00, (byte)0x17,
			(byte)0x00, (byte)0x00, (byte)0x01, (byte)0x7E, (byte)0x00, (byte)0x00, (byte)0x17, (byte)0xEF,
			(byte)0x06, (byte)0xEF, (byte)0xFF, (byte)0xFF, (byte)0x6E, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xEF, (byte)0xFF, (byte)0xFF, (byte)0xFA, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xA3,
			(byte)0xFF, (byte)0xFF, (byte)0xFA, (byte)0x30, (byte)0xFF, (byte)0xFA, (byte)0xA3, (byte)0x00,
			(byte)0xFF, (byte)0xFA, (byte)0x30, (byte)0x00, (byte)0xFF, (byte)0xA3, (byte)0x00, (byte)0x00
		},
		{
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x0F, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
		},
		{
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00,
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00,
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00,
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
		},
		{
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0xF4, (byte)0xBF,
			(byte)0x00, (byte)0x00, (byte)0x4B, (byte)0xFF, (byte)0x00, (byte)0x04, (byte)0xBF, (byte)0xFF,
			(byte)0x00, (byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0x04, (byte)0xBF, (byte)0xFF, (byte)0xFF,
			(byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xBF, (byte)0xFF, (byte)0xFF, (byte)0xFD,
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xD7, (byte)0x10, (byte)0x00,
			(byte)0xFD, (byte)0xF1, (byte)0x00, (byte)0x00, (byte)0xDA, (byte)0x10, (byte)0x00, (byte)0x00,
			(byte)0x71, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x10, (byte)0x00, (byte)0x00, (byte)0x17,
			(byte)0x00, (byte)0x00, (byte)0x01, (byte)0x7E, (byte)0x00, (byte)0x00, (byte)0x17, (byte)0xEF,
			(byte)0x06, (byte)0xEF, (byte)0xFF, (byte)0xFF, (byte)0x6E, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xEF, (byte)0xFF, (byte)0xFF, (byte)0xFA, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xA3,
			(byte)0xFF, (byte)0xFF, (byte)0xFA, (byte)0x30, (byte)0xFF, (byte)0xFA, (byte)0xA3, (byte)0x00,
			(byte)0xFF, (byte)0xFA, (byte)0x30, (byte)0x00, (byte)0xFF, (byte)0xA3, (byte)0x00, (byte)0x00
		},
		{
			(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0xF4, (byte)0xBF,
			(byte)0x00, (byte)0x00, (byte)0x4B, (byte)0xFF, (byte)0x00, (byte)0x04, (byte)0xBF, (byte)0xFF,
			(byte)0x00, (byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0x04, (byte)0xBF, (byte)0xFF, (byte)0xFF,
			(byte)0x4B, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xBF, (byte)0xFF, (byte)0xFF, (byte)0xFD,
			(byte)0xFF, (byte)0xFD, (byte)0x71, (byte)0x00, (byte)0xFF, (byte)0xD7, (byte)0x10, (byte)0x00,
			(byte)0xFD, (byte)0xF1, (byte)0x00, (byte)0x00, (byte)0xDA, (byte)0x10, (byte)0x00, (byte)0x00,
			(byte)0x71, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x10, (byte)0x00, (byte)0x00, (byte)0x17,
			(byte)0x00, (byte)0x00, (byte)0x01, (byte)0x7E, (byte)0x00, (byte)0x00, (byte)0x17, (byte)0xEF,
			(byte)0x06, (byte)0xEF, (byte)0xFF, (byte)0xFF, (byte)0x6E, (byte)0xFF, (byte)0xFF, (byte)0xFF,
			(byte)0xEF, (byte)0xFF, (byte)0xFF, (byte)0xFA, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xA3,
			(byte)0xFF, (byte)0xFF, (byte)0xFA, (byte)0x30, (byte)0xFF, (byte)0xFA, (byte)0xA3, (byte)0x00,
			(byte)0xFF, (byte)0xFA, (byte)0x30, (byte)0x00, (byte)0xFF, (byte)0xA3, (byte)0x00, (byte)0x00
		}
	};
	
	private static final byte[][] FONT_DATA = new byte[][] {
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x7C, (byte)0x44, (byte)0x44, (byte)0x28, (byte)0x10 }, //A
		{ (byte)0x00, (byte)0x3C, (byte)0x44, (byte)0x44, (byte)0x3C, (byte)0x44, (byte)0x44, (byte)0x3C }, //B
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x44, (byte)0x38 }, //C
		{ (byte)0x00, (byte)0x1C, (byte)0x24, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x24, (byte)0x1C }, //D
		{ (byte)0x00, (byte)0x7C, (byte)0x04, (byte)0x04, (byte)0x3C, (byte)0x04, (byte)0x04, (byte)0x7C }, //E
		{ (byte)0x00, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x3C, (byte)0x04, (byte)0x04, (byte)0x7C }, //F
		{ (byte)0x00, (byte)0x78, (byte)0x44, (byte)0x44, (byte)0x74, (byte)0x04, (byte)0x44, (byte)0x38 }, //G
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x7C, (byte)0x44, (byte)0x44, (byte)0x44 }, //H
		{ (byte)0x00, (byte)0x38, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x38 }, //I
		{ (byte)0x00, (byte)0x18, (byte)0x24, (byte)0x20, (byte)0x20, (byte)0x20, (byte)0x20, (byte)0x70 }, //J
		{ (byte)0x00, (byte)0x44, (byte)0x24, (byte)0x14, (byte)0x0C, (byte)0x14, (byte)0x24, (byte)0x44 }, //K
		{ (byte)0x00, (byte)0x7C, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x04 }, //L
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x54, (byte)0x54, (byte)0x6C, (byte)0x44 }, //M
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x64, (byte)0x54, (byte)0x4C, (byte)0x44, (byte)0x44 }, //N
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x38 }, //O
		{ (byte)0x00, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x3C, (byte)0x44, (byte)0x44, (byte)0x3C }, //P
		{ (byte)0x00, (byte)0x58, (byte)0x24, (byte)0x54, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x38 }, //Q
		{ (byte)0x00, (byte)0x44, (byte)0x24, (byte)0x14, (byte)0x3C, (byte)0x44, (byte)0x44, (byte)0x3C }, //R
		{ (byte)0x00, (byte)0x3C, (byte)0x40, (byte)0x40, (byte)0x38, (byte)0x04, (byte)0x04, (byte)0x78 }, //S
		{ (byte)0x00, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x7C }, //T
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44 }, //U
		{ (byte)0x00, (byte)0x10, (byte)0x28, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x44 }, //V
		{ (byte)0x00, (byte)0x28, (byte)0x54, (byte)0x54, (byte)0x54, (byte)0x44, (byte)0x44, (byte)0x44 }, //W
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x28, (byte)0x10, (byte)0x28, (byte)0x44, (byte)0x44 }, //X
		{ (byte)0x00, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x28, (byte)0x44, (byte)0x44, (byte)0x44 }, //Y
		{ (byte)0x00, (byte)0x7C, (byte)0x04, (byte)0x08, (byte)0x10, (byte)0x20, (byte)0x40, (byte)0x7C }, //Z
		{ (byte)0x00, (byte)0x78, (byte)0x44, (byte)0x78, (byte)0x40, (byte)0x38, (byte)0x00, (byte)0x00 }, //a
		{ (byte)0x00, (byte)0x3C, (byte)0x44, (byte)0x44, (byte)0x4C, (byte)0x34, (byte)0x04, (byte)0x04 }, //b
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x04, (byte)0x04, (byte)0x38, (byte)0x00, (byte)0x00 }, //c
		{ (byte)0x00, (byte)0x78, (byte)0x44, (byte)0x44, (byte)0x64, (byte)0x58, (byte)0x40, (byte)0x40 }, //d
		{ (byte)0x00, (byte)0x38, (byte)0x04, (byte)0x7C, (byte)0x44, (byte)0x38, (byte)0x00, (byte)0x00 }, //e
		{ (byte)0x00, (byte)0x08, (byte)0x08, (byte)0x08, (byte)0x1C, (byte)0x08, (byte)0x48, (byte)0x30 }, //f
		{ (byte)0x38, (byte)0x40, (byte)0x78, (byte)0x44, (byte)0x44, (byte)0x78, (byte)0x00, (byte)0x00 }, //g
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x4C, (byte)0x34, (byte)0x04, (byte)0x04 }, //h
		{ (byte)0x00, (byte)0x38, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x18, (byte)0x00, (byte)0x10 }, //i
		{ (byte)0x18, (byte)0x24, (byte)0x20, (byte)0x20, (byte)0x20, (byte)0x30, (byte)0x00, (byte)0x20 }, //j
		{ (byte)0x00, (byte)0x24, (byte)0x14, (byte)0x0C, (byte)0x14, (byte)0x24, (byte)0x04, (byte)0x04 }, //k
		{ (byte)0x00, (byte)0x38, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x18 }, //l
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x54, (byte)0x54, (byte)0x2C, (byte)0x00, (byte)0x00 }, //m
		{ (byte)0x00, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x4C, (byte)0x34, (byte)0x00, (byte)0x00 }, //n
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x38, (byte)0x00, (byte)0x00 }, //o
		{ (byte)0x04, (byte)0x04, (byte)0x3C, (byte)0x44, (byte)0x44, (byte)0x3C, (byte)0x00, (byte)0x00 }, //p
		{ (byte)0x40, (byte)0x40, (byte)0x58, (byte)0x64, (byte)0x64, (byte)0x58, (byte)0x00, (byte)0x00 }, //q
		{ (byte)0x00, (byte)0x04, (byte)0x04, (byte)0x04, (byte)0x4C, (byte)0x34, (byte)0x00, (byte)0x00 }, //r
		{ (byte)0x00, (byte)0x3C, (byte)0x40, (byte)0x38, (byte)0x04, (byte)0x38, (byte)0x00, (byte)0x00 }, //s
		{ (byte)0x00, (byte)0x30, (byte)0x48, (byte)0x08, (byte)0x08, (byte)0x1C, (byte)0x08, (byte)0x08 }, //t
		{ (byte)0x00, (byte)0x58, (byte)0x64, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x00, (byte)0x00 }, //u
		{ (byte)0x00, (byte)0x10, (byte)0x28, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x00, (byte)0x00 }, //v
		{ (byte)0x00, (byte)0x28, (byte)0x54, (byte)0x54, (byte)0x44, (byte)0x44, (byte)0x00, (byte)0x00 }, //w
		{ (byte)0x00, (byte)0x44, (byte)0x28, (byte)0x10, (byte)0x28, (byte)0x44, (byte)0x00, (byte)0x00 }, //x
		{ (byte)0x38, (byte)0x40, (byte)0x78, (byte)0x44, (byte)0x44, (byte)0x44, (byte)0x00, (byte)0x00 }, //y
		{ (byte)0x00, (byte)0x7C, (byte)0x08, (byte)0x10, (byte)0x20, (byte)0x7C, (byte)0x00, (byte)0x00 }, //z
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x4C, (byte)0x54, (byte)0x64, (byte)0x44, (byte)0x38 }, //0
		{ (byte)0x00, (byte)0x38, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x10, (byte)0x18, (byte)0x10 }, //1
		{ (byte)0x00, (byte)0x7C, (byte)0x08, (byte)0x10, (byte)0x20, (byte)0x40, (byte)0x44, (byte)0x38 }, //2
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x40, (byte)0x20, (byte)0x10, (byte)0x20, (byte)0x7C }, //3
		{ (byte)0x00, (byte)0x20, (byte)0x20, (byte)0x7C, (byte)0x24, (byte)0x28, (byte)0x30, (byte)0x20 }, //4
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x40, (byte)0x40, (byte)0x3C, (byte)0x04, (byte)0x7C }, //5
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x44, (byte)0x3C, (byte)0x04, (byte)0x08, (byte)0x30 }, //6
		{ (byte)0x00, (byte)0x08, (byte)0x08, (byte)0x08, (byte)0x10, (byte)0x20, (byte)0x40, (byte)0x7C }, //7
		{ (byte)0x00, (byte)0x38, (byte)0x44, (byte)0x44, (byte)0x38, (byte)0x44, (byte)0x44, (byte)0x38 }, //8
		{ (byte)0x00, (byte)0x18, (byte)0x20, (byte)0x40, (byte)0x78, (byte)0x44, (byte)0x44, (byte)0x38 }  //9
	};
	
	public int getPictureData(int picture, int channel, int row, int column) {
		return PICTURE_DATA[picture % PICTURE_DATA.length][((channel % 3) << 5) | ((row & 7) << 2) | (column & 3)] & 0xFF;
	}
	
	public int getFontData(int index, int row) {
		return FONT_DATA[index % FONT_DATA.length][row & 7] & 0xFF;
	}
	
	public int asciiToIndex(int ascii) {
		if (ascii >= 'A' && ascii <= 'Z') return (ascii - 'A');
		else if (ascii >= 'a' && ascii <= 'z') return (ascii - 'a' + 26);
		else if (ascii >= '0' && ascii <= '9') return (ascii - '0' + 52);
		else return -1;
	}
}
